import '../../data/models/project_model.dart';
import '../../data/models/api_response.dart';

/// 项目仓储接口
abstract class ProjectRepository {
  /// 创建项目
  Future<ProjectModel> createProject(ProjectCreateRequest request);

  /// 更新项目
  Future<ProjectModel> updateProject(
      int projectId, ProjectUpdateRequest request);

  /// 删除项目
  Future<void> deleteProject(int projectId);

  /// 获取项目详情
  Future<ProjectModel> getProject(int projectId);

  /// 分页获取项目列表
  Future<PageResponse<ProjectModel>> getProjects({
    ProjectStatus? status,
    int? creatorId,
    String? keyword,
    int page = 0,
    int size = 10,
  });

  /// 获取我的项目列表
  Future<List<ProjectModel>> getMyProjects();

  /// 获取即将到期的项目
  Future<List<ProjectModel>> getProjectsNearDeadline();

  /// 获取已过期的项目
  Future<List<ProjectModel>> getOverdueProjects();

  /// 缓存项目列表
  Future<void> cacheProjects(List<ProjectModel> projects);

  /// 获取缓存的项目列表
  Future<List<ProjectModel>?> getCachedProjects();

  /// 清除项目缓存
  Future<void> clearProjectCache();
}
